fix trackfilter merge bug with segments.
authortsteven4 <tsteven4@gmail.com>
Wed, 9 Jan 2019 15:10:49 +0000 (08:10 -0700)
committertsteven4 <tsteven4@gmail.com>
Wed, 9 Jan 2019 15:10:49 +0000 (08:10 -0700)
enhance trackfilter test cases for better coverage.

reference/track/trackfilter3.gpx [new file with mode: 0644]
reference/track/trackfilter_merge.gpx [new file with mode: 0644]
reference/track/trackfilter_merge~gpx.gpx [new file with mode: 0644]
reference/track/trackfilter_trk2seg.gpx [new file with mode: 0644]
reference/track/trackfilter_trk2seg~gpx.gpx [new file with mode: 0644]
testo.d/track.test
trackfilter.cc

diff --git a/reference/track/trackfilter3.gpx b/reference/track/trackfilter3.gpx
new file mode 100644 (file)
index 0000000..19d109d
--- /dev/null
@@ -0,0 +1,266 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gpx version="1.0" creator="GPSBabel - http://www.gpsbabel.org" xmlns="http://www.topografix.com/GPX/1/0">
+  <time>1970-01-01T00:00:00Z</time>
+  <bounds minlat="30.045517000" minlon="-91.610567000" maxlat="30.062783000" maxlon="-91.589750000"/>
+  <trk>
+    <name>LOG-2002-05-25T17:06:21Z</name>
+    <trkseg>
+      <trkpt lat="30.062183000" lon="-91.610350000">
+        <ele>1.000</ele>
+        <time>2002-05-25T17:06:21Z</time>
+      </trkpt>
+      <trkpt lat="30.062783000" lon="-91.610567000">
+        <ele>0.000</ele>
+        <time>2002-05-25T17:09:55Z</time>
+      </trkpt>
+      <trkpt lat="30.062700000" lon="-91.608267000">
+        <ele>0.000</ele>
+        <time>2002-05-25T17:12:00Z</time>
+      </trkpt>
+      <trkpt lat="30.062333000" lon="-91.607383000">
+        <ele>0.000</ele>
+        <time>2002-05-25T17:12:48Z</time>
+      </trkpt>
+      <trkpt lat="30.061533000" lon="-91.605283000">
+        <ele>0.000</ele>
+        <time>2002-05-25T17:14:41Z</time>
+      </trkpt>
+      <trkpt lat="30.059783000" lon="-91.599400000">
+        <ele>0.000</ele>
+        <time>2002-05-25T17:17:16Z</time>
+      </trkpt>
+      <trkpt lat="30.057800000" lon="-91.596683000">
+        <ele>0.000</ele>
+        <time>2002-05-25T17:17:46Z</time>
+      </trkpt>
+      <trkpt lat="30.055383000" lon="-91.594900000">
+        <ele>0.000</ele>
+        <time>2002-05-25T17:18:20Z</time>
+      </trkpt>
+      <trkpt lat="30.053883000" lon="-91.592617000">
+        <ele>0.000</ele>
+        <time>2002-05-25T17:19:01Z</time>
+      </trkpt>
+      <trkpt lat="30.049733000" lon="-91.589750000">
+        <ele>0.000</ele>
+        <time>2002-05-25T17:20:46Z</time>
+      </trkpt>
+      <trkpt lat="30.049017000" lon="-91.589883000">
+        <ele>0.000</ele>
+        <time>2002-05-25T17:21:10Z</time>
+      </trkpt>
+      <trkpt lat="30.048800000" lon="-91.592933000">
+        <ele>0.000</ele>
+        <time>2002-05-25T17:21:51Z</time>
+      </trkpt>
+      <trkpt lat="30.046233000" lon="-91.596450000">
+        <ele>0.000</ele>
+        <time>2002-05-25T17:22:35Z</time>
+      </trkpt>
+      <trkpt lat="30.045517000" lon="-91.598717000">
+        <ele>0.000</ele>
+        <time>2002-05-25T17:23:08Z</time>
+      </trkpt>
+      <trkpt lat="30.047300000" lon="-91.600267000">
+        <ele>0.000</ele>
+        <time>2002-05-25T18:04:23Z</time>
+      </trkpt>
+      <trkpt lat="30.047000000" lon="-91.599633000">
+        <ele>2.000</ele>
+        <time>2002-05-25T18:06:04Z</time>
+      </trkpt>
+      <trkpt lat="30.046433000" lon="-91.599467000">
+        <ele>0.000</ele>
+        <time>2002-05-25T18:07:06Z</time>
+      </trkpt>
+      <trkpt lat="30.046200000" lon="-91.598950000">
+        <ele>1.000</ele>
+        <time>2002-05-25T18:08:18Z</time>
+      </trkpt>
+      <trkpt lat="30.046367000" lon="-91.597733000">
+        <ele>0.000</ele>
+        <time>2002-05-25T18:10:20Z</time>
+      </trkpt>
+      <trkpt lat="30.046350000" lon="-91.597167000">
+        <ele>0.000</ele>
+        <time>2002-05-25T18:11:09Z</time>
+      </trkpt>
+      <trkpt lat="30.046783000" lon="-91.596333000">
+        <ele>0.000</ele>
+        <time>2002-05-25T18:12:18Z</time>
+      </trkpt>
+      <trkpt lat="30.047450000" lon="-91.595200000">
+        <ele>0.000</ele>
+        <time>2002-05-25T18:14:22Z</time>
+      </trkpt>
+      <trkpt lat="30.047800000" lon="-91.594767000">
+        <ele>2.000</ele>
+        <time>2002-05-25T18:15:04Z</time>
+      </trkpt>
+      <trkpt lat="30.048250000" lon="-91.594083000">
+        <ele>1.000</ele>
+        <time>2002-05-25T18:16:14Z</time>
+      </trkpt>
+      <trkpt lat="30.048683000" lon="-91.593800000">
+        <ele>1.000</ele>
+        <time>2002-05-25T18:17:01Z</time>
+      </trkpt>
+      <trkpt lat="30.049350000" lon="-91.593850000">
+        <ele>0.000</ele>
+        <time>2002-05-25T18:18:07Z</time>
+      </trkpt>
+      <trkpt lat="30.050317000" lon="-91.593983000">
+        <ele>2.000</ele>
+        <time>2002-05-25T18:19:51Z</time>
+      </trkpt>
+      <trkpt lat="30.050783000" lon="-91.594117000">
+        <ele>0.000</ele>
+        <time>2002-05-25T18:20:39Z</time>
+      </trkpt>
+      <trkpt lat="30.051233000" lon="-91.594367000">
+        <ele>0.000</ele>
+        <time>2002-05-25T18:21:24Z</time>
+      </trkpt>
+      <trkpt lat="30.051800000" lon="-91.594367000">
+        <ele>0.000</ele>
+        <time>2002-05-25T18:22:17Z</time>
+      </trkpt>
+      <trkpt lat="30.052217000" lon="-91.594667000">
+        <ele>0.000</ele>
+        <time>2002-05-25T18:23:18Z</time>
+      </trkpt>
+      <trkpt lat="30.053017000" lon="-91.594683000">
+        <ele>0.000</ele>
+        <time>2002-05-25T18:24:37Z</time>
+      </trkpt>
+      <trkpt lat="30.054867000" lon="-91.595200000">
+        <ele>6.000</ele>
+        <time>2002-05-25T18:28:13Z</time>
+      </trkpt>
+      <trkpt lat="30.053733000" lon="-91.594933000">
+        <ele>2.000</ele>
+        <time>2002-05-25T18:31:36Z</time>
+      </trkpt>
+      <trkpt lat="30.053183000" lon="-91.594783000">
+        <ele>0.000</ele>
+        <time>2002-05-25T18:32:56Z</time>
+      </trkpt>
+      <trkpt lat="30.052633000" lon="-91.594833000">
+        <ele>0.000</ele>
+        <time>2002-05-25T18:34:02Z</time>
+      </trkpt>
+      <trkpt lat="30.052450000" lon="-91.595433000">
+        <ele>0.000</ele>
+        <time>2002-05-25T18:36:03Z</time>
+      </trkpt>
+      <trkpt lat="30.052483000" lon="-91.595967000">
+        <ele>0.000</ele>
+        <time>2002-05-25T18:36:48Z</time>
+      </trkpt>
+      <trkpt lat="30.052650000" lon="-91.596783000">
+        <ele>1.000</ele>
+        <time>2002-05-25T18:37:52Z</time>
+      </trkpt>
+      <trkpt lat="30.053133000" lon="-91.597850000">
+        <ele>0.000</ele>
+        <time>2002-05-25T18:39:18Z</time>
+      </trkpt>
+      <trkpt lat="30.053617000" lon="-91.597967000">
+        <ele>0.000</ele>
+        <time>2002-05-25T18:40:15Z</time>
+      </trkpt>
+      <trkpt lat="30.053967000" lon="-91.597767000">
+        <ele>6.000</ele>
+        <time>2002-05-25T18:41:25Z</time>
+      </trkpt>
+      <trkpt lat="30.053617000" lon="-91.598083000">
+        <ele>0.000</ele>
+        <time>2002-05-25T18:42:37Z</time>
+      </trkpt>
+      <trkpt lat="30.053200000" lon="-91.597917000">
+        <ele>0.000</ele>
+        <time>2002-05-25T18:44:01Z</time>
+      </trkpt>
+      <trkpt lat="30.052817000" lon="-91.597517000">
+        <ele>0.000</ele>
+        <time>2002-05-25T18:45:53Z</time>
+      </trkpt>
+      <trkpt lat="30.052567000" lon="-91.596933000">
+        <ele>0.000</ele>
+        <time>2002-05-25T18:46:54Z</time>
+      </trkpt>
+      <trkpt lat="30.052333000" lon="-91.596433000">
+        <ele>0.000</ele>
+        <time>2002-05-25T18:47:42Z</time>
+      </trkpt>
+      <trkpt lat="30.052250000" lon="-91.595683000">
+        <ele>0.000</ele>
+        <time>2002-05-25T18:48:41Z</time>
+      </trkpt>
+      <trkpt lat="30.052217000" lon="-91.595017000">
+        <ele>0.000</ele>
+        <time>2002-05-25T18:49:52Z</time>
+      </trkpt>
+      <trkpt lat="30.051883000" lon="-91.594700000">
+        <ele>0.000</ele>
+        <time>2002-05-25T18:50:49Z</time>
+      </trkpt>
+      <trkpt lat="30.051050000" lon="-91.594400000">
+        <ele>0.000</ele>
+        <time>2002-05-25T18:52:14Z</time>
+      </trkpt>
+      <trkpt lat="30.050567000" lon="-91.594233000">
+        <ele>0.000</ele>
+        <time>2002-05-25T18:52:56Z</time>
+      </trkpt>
+      <trkpt lat="30.050183000" lon="-91.594100000">
+        <ele>0.000</ele>
+        <time>2002-05-25T18:53:38Z</time>
+      </trkpt>
+      <trkpt lat="30.049100000" lon="-91.593717000">
+        <ele>0.000</ele>
+        <time>2002-05-26T18:55:11Z</time>
+      </trkpt>
+      <trkpt lat="30.048450000" lon="-91.594250000">
+        <ele>0.000</ele>
+        <time>2002-05-26T18:56:32Z</time>
+      </trkpt>
+      <trkpt lat="30.048083000" lon="-91.594750000">
+        <ele>0.000</ele>
+        <time>2002-05-26T18:57:24Z</time>
+      </trkpt>
+      <trkpt lat="30.047500000" lon="-91.595450000">
+        <ele>7.000</ele>
+        <time>2002-05-26T18:58:40Z</time>
+      </trkpt>
+      <trkpt lat="30.047067000" lon="-91.596000000">
+        <ele>0.000</ele>
+        <time>2002-05-26T18:59:28Z</time>
+      </trkpt>
+      <trkpt lat="30.046633000" lon="-91.596600000">
+        <ele>0.000</ele>
+        <time>2002-05-27T19:00:22Z</time>
+      </trkpt>
+      <trkpt lat="30.046400000" lon="-91.597650000">
+        <ele>0.000</ele>
+        <time>2002-05-27T19:01:41Z</time>
+      </trkpt>
+      <trkpt lat="30.046233000" lon="-91.598467000">
+        <ele>0.000</ele>
+        <time>2002-05-27T19:02:48Z</time>
+      </trkpt>
+      <trkpt lat="30.046317000" lon="-91.598967000">
+        <ele>0.000</ele>
+        <time>2002-05-27T19:03:43Z</time>
+      </trkpt>
+      <trkpt lat="30.046783000" lon="-91.599283000">
+        <ele>0.000</ele>
+        <time>2002-05-27T19:04:49Z</time>
+      </trkpt>
+      <trkpt lat="30.047133000" lon="-91.599667000">
+        <ele>0.000</ele>
+        <time>2002-05-27T19:05:57Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+</gpx>
diff --git a/reference/track/trackfilter_merge.gpx b/reference/track/trackfilter_merge.gpx
new file mode 100644 (file)
index 0000000..a59e64d
--- /dev/null
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gpx version="1.0" creator="GPSBabel - http://www.gpsbabel.org" xmlns="http://www.topografix.com/GPX/1/0">
+  <time>2019-01-09T01:14:24.839Z</time>
+  <bounds minlat="0.000000000" minlon="2.999550663" maxlat="0.000000000" maxlon="3.000943608"/>
+  <trk>
+    <trkseg>
+      <trkpt lat="0.000000000" lon="2.999649517">
+        <time>2010-01-01T00:00:00.200Z</time>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="2.999874186">
+        <time>2010-01-01T00:00:00.600Z</time>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="3.000134801">
+        <time>2010-01-01T00:00:01Z</time>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="3.000431364">
+        <time>2010-01-01T00:00:01.400Z</time>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="3.000763874">
+        <time>2010-01-01T00:00:01.800Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="0.000000000" lon="2.999550663">
+        <time>2010-01-01T00:00:00Z</time>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="2.999757358">
+        <time>2010-01-01T00:00:00.400Z</time>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="3.000000000">
+        <time>2010-01-01T00:00:00.800Z</time>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="3.000278589">
+        <time>2010-01-01T00:00:01.200Z</time>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="3.000593125">
+        <time>2010-01-01T00:00:01.600Z</time>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="3.000943608">
+        <time>2010-01-01T00:00:02Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+</gpx>
diff --git a/reference/track/trackfilter_merge~gpx.gpx b/reference/track/trackfilter_merge~gpx.gpx
new file mode 100644 (file)
index 0000000..04e90d1
--- /dev/null
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gpx version="1.0" creator="GPSBabel - http://www.gpsbabel.org" xmlns="http://www.topografix.com/GPX/1/0">
+  <time>1970-01-01T00:00:00Z</time>
+  <bounds minlat="0.000000000" minlon="2.999550663" maxlat="0.000000000" maxlon="3.000943608"/>
+  <trk>
+    <trkseg>
+      <trkpt lat="0.000000000" lon="2.999550663">
+        <time>2010-01-01T00:00:00Z</time>
+        <speed>0.000000</speed>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="2.999649517">
+        <time>2010-01-01T00:00:00.200Z</time>
+        <speed>55.021885</speed>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="2.999757358">
+        <time>2010-01-01T00:00:00.400Z</time>
+        <speed>60.024025</speed>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="2.999874186">
+        <time>2010-01-01T00:00:00.600Z</time>
+        <speed>65.026169</speed>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="3.000000000">
+        <time>2010-01-01T00:00:00.800Z</time>
+        <speed>70.027756</speed>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="3.000134801">
+        <time>2010-01-01T00:00:01Z</time>
+        <speed>75.029892</speed>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="3.000278589">
+        <time>2010-01-01T00:00:01.200Z</time>
+        <speed>80.032036</speed>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="3.000431364">
+        <time>2010-01-01T00:00:01.400Z</time>
+        <speed>85.034180</speed>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="3.000593125">
+        <time>2010-01-01T00:00:01.600Z</time>
+        <speed>90.035759</speed>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="3.000763874">
+        <time>2010-01-01T00:00:01.800Z</time>
+        <speed>95.038460</speed>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="3.000943608">
+        <time>2010-01-01T00:00:02Z</time>
+        <speed>100.039490</speed>
+      </trkpt>
+    </trkseg>
+  </trk>
+</gpx>
diff --git a/reference/track/trackfilter_trk2seg.gpx b/reference/track/trackfilter_trk2seg.gpx
new file mode 100644 (file)
index 0000000..9c4c8f4
--- /dev/null
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gpx version="1.0" creator="GPSBabel - http://www.gpsbabel.org" xmlns="http://www.topografix.com/GPX/1/0">
+  <time>2019-01-09T02:28:45.648Z</time>
+  <bounds minlat="0.000000000" minlon="2.999550663" maxlat="0.000000000" maxlon="3.000943608"/>
+  <trk>
+    <trkseg>
+      <trkpt lat="0.000000000" lon="2.999550663">
+        <time>2010-01-01T00:00:00Z</time>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="2.999649517">
+        <time>2010-01-01T00:00:00.200Z</time>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="2.999757358">
+        <time>2010-01-01T00:00:00.400Z</time>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="2.999874186">
+        <time>2010-01-01T00:00:00.600Z</time>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="3.000000000">
+        <time>2010-01-01T00:00:00.800Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="0.000000000" lon="3.000134801">
+        <time>2010-01-01T00:00:01Z</time>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="3.000278589">
+        <time>2010-01-01T00:00:01.200Z</time>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="3.000431364">
+        <time>2010-01-01T00:00:01.400Z</time>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="3.000593125">
+        <time>2010-01-01T00:00:01.600Z</time>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="3.000763874">
+        <time>2010-01-01T00:00:01.800Z</time>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="3.000943608">
+        <time>2010-01-01T00:00:02Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+</gpx>
diff --git a/reference/track/trackfilter_trk2seg~gpx.gpx b/reference/track/trackfilter_trk2seg~gpx.gpx
new file mode 100644 (file)
index 0000000..970bedb
--- /dev/null
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gpx version="1.0" creator="GPSBabel - http://www.gpsbabel.org" xmlns="http://www.topografix.com/GPX/1/0">
+  <time>1970-01-01T00:00:00Z</time>
+  <bounds minlat="0.000000000" minlon="2.999550663" maxlat="0.000000000" maxlon="3.000943608"/>
+  <trk>
+    <trkseg>
+      <trkpt lat="0.000000000" lon="2.999550663">
+        <time>2010-01-01T00:00:00Z</time>
+        <speed>0.000000</speed>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="2.999649517">
+        <time>2010-01-01T00:00:00.200Z</time>
+        <speed>55.021885</speed>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="2.999757358">
+        <time>2010-01-01T00:00:00.400Z</time>
+        <speed>60.024025</speed>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="2.999874186">
+        <time>2010-01-01T00:00:00.600Z</time>
+        <speed>65.026169</speed>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="3.000000000">
+        <time>2010-01-01T00:00:00.800Z</time>
+        <speed>70.027756</speed>
+      </trkpt>
+    </trkseg>
+    <trkseg>
+      <trkpt lat="0.000000000" lon="3.000134801">
+        <time>2010-01-01T00:00:01Z</time>
+        <speed>0.000000</speed>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="3.000278589">
+        <time>2010-01-01T00:00:01.200Z</time>
+        <speed>80.032036</speed>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="3.000431364">
+        <time>2010-01-01T00:00:01.400Z</time>
+        <speed>85.034180</speed>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="3.000593125">
+        <time>2010-01-01T00:00:01.600Z</time>
+        <speed>90.035759</speed>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="3.000763874">
+        <time>2010-01-01T00:00:01.800Z</time>
+        <speed>95.038460</speed>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="3.000943608">
+        <time>2010-01-01T00:00:02Z</time>
+        <speed>100.039490</speed>
+      </trkpt>
+    </trkseg>
+  </trk>
+</gpx>
index 84a6dba3c81629f34fc77c8ad4d73cda3c985c8b..90aea72d93182f4edba74df2be050a7cfd125792 100644 (file)
@@ -16,6 +16,9 @@ compare ${REFERENCE}/track/trackfilter-sdistance.gpx ${TMPDIR}/trackfilter2.gpx
 gpsbabel -t -i gpx -f ${REFERENCE}/track/trackfilter.gpx -x track,pack,sdistance=0.1k,split=5m,title=%Y%m%d  -o gpx -F ${TMPDIR}/trackfilter-sdistance2.gpx
 compare ${REFERENCE}/track/trackfilter-sdistance2.gpx ${TMPDIR}/trackfilter-sdistance2.gpx
 
+gpsbabel -i gpx -f ${REFERENCE}/track/trackfilter.gpx -x track,pack,title=LOG-%FT%TZ -o gpx -F ${TMPDIR}/trackfilter3.gpx
+compare ${REFERENCE}/track/trackfilter3.gpx ${TMPDIR}/trackfilter3.gpx
+
 # Exercise the 'faketime' filter.  The middle of the three points has
 # time so we can exercise the 'forced' option, too.
 gpsbabel -t -i unicsv -f ${REFERENCE}/track/trackfilter_faketime.txt -x track,faketime=20100506060000+5 -o gpx -F ${TMPDIR}/ft.gpx 
@@ -51,6 +54,14 @@ compare ${REFERENCE}/track/trackfilter-move-d.gpx ${TMPDIR}/trackfilter-move-d.g
 gpsbabel -t -i gpx -f ${REFERENCE}/track/trackfilter.gpx -x track,move=-5m,name=LOG-20020527,start=20020527185742,stop=20020527185950,minimum_points=2 -o gpx -F ${TMPDIR}/trackfilter-move-m.gpx
 compare ${REFERENCE}/track/trackfilter-move-m.gpx ${TMPDIR}/trackfilter-move-m.gpx
 
+# actually test a merge
+gpsbabel -t -i gpx -f ${REFERENCE}/track/trackfilter_merge.gpx -x track,merge -x track,speed -o gpx -F ${TMPDIR}/trackfilter_merge~gpx.gpx
+compare ${REFERENCE}/track/trackfilter_merge~gpx.gpx ${TMPDIR}/trackfilter_merge~gpx.gpx
+
+# test trk2seg
+gpsbabel -t -i gpx -f ${REFERENCE}/track/trackfilter_trk2seg.gpx -x track,speed,trk2seg -o gpx -F ${TMPDIR}/trackfilter_trk2seg~gpx.gpx
+compare ${REFERENCE}/track/trackfilter_trk2seg~gpx.gpx ${TMPDIR}/trackfilter_trk2seg~gpx.gpx
+
 # speed with msec
 gpsbabel -t -i unicsv -f ${REFERENCE}/track/utm_subsecond_track.csv -x track,speed -o unicsv,utc -F ${TMPDIR}/utm_subsecond_track~csv.csv
 compare ${REFERENCE}/track/utm_subsecond_track~csv.csv ${TMPDIR}/utm_subsecond_track~csv.csv
index bc81790e7774119e8d89600756291ca42a866fc4..e6c4bdde122a03f0ebb08d6a5fd44b057857528c 100644 (file)
@@ -350,17 +350,18 @@ void TrackFilter::trackfilter_merge()
       queue* elem, *tmp;
       QUEUE_FOR_EACH(&track->waypoint_list, elem, tmp) {
         auto wpt = reinterpret_cast<Waypoint*>(elem);
+        track_del_wpt(track, wpt); /* copies any new_trkseg flag forward, and clears new_trkseg flag. */
         if (wpt->creation_time.isValid()) {
-          buff.append(new Waypoint(*wpt));
           // we will put the merged points in one track segment,
           // as it isn't clear how track segments in the original tracks
           // should relate to the merged track.
+          // track_del_wpt cleared new_trkseg flag for wpt.
           // track_add_wpt will set new_trkseg for the first point
-          // after the sort.
-          wpt->wpt_flags.new_trkseg = 0;
+          // added to a track.
+          buff.append(wpt);
+        } else {
+          delete wpt;
         }
-        track_del_wpt(track, wpt); // copies any new_trkseg flag forward.
-        delete wpt;
       }
       if (it != track_list.begin()) {
         track_del_head(track);